using System;
using System.Collections.Generic;
using System.Text;

namespace ImprCheques
{
    class clCia
    {
        private int _Codigo;
        private string _Nombre;
        private string _Abreviatura;
        private string _LibCXP;

        public clCia(int pCodigo, string pNombre, string pAbreviatura, string pLibCXP)
        {
            Codigo = pCodigo;
            Nombre = pNombre;
            Abreviatura = pAbreviatura;
            LibCXP = pLibCXP;
        }

        public clCia(object pCodigo, object pNombre, object pAbreviatura, object pLibCXP)
        {
            Codigo = System.Convert.ToInt16(pCodigo);
            Nombre = System.Convert.ToString(pNombre);
            Abreviatura = System.Convert.ToString(pAbreviatura);
            LibCXP = System.Convert.ToString(pLibCXP);
        }

        public clCia() { }

        public int Codigo
        {
            get
            {
                return _Codigo;
            }
            set
            {
                _Codigo = value;
            }
        }

        public string Nombre
        {
            get
            {
                return _Nombre;
            }
            set
            {
                _Nombre = value;
            }
        }

        public string Abreviatura
        {
            get
            {
                return _Abreviatura;
            }
            set
            {
                _Abreviatura = value;
            }
        }

        public string LibCXP
        {
            get
            {
                return _LibCXP;
            }
            set
            {
                _LibCXP = value.TrimEnd(null);
            }
        }

        public override string ToString()
        {
            return _Nombre;
        }
    }

    class clBanco
    {
        private string _Codigo;
        private string _Abreviatura;

        public clBanco(string pCodigo, string pAbreviatura)
        {
            Codigo = pCodigo;
            Abreviatura = pAbreviatura;
        }

        public clBanco(object pCodigo, object pAbreviatura)
        {
            Codigo = System.Convert.ToString(pCodigo);
            Abreviatura = System.Convert.ToString(pAbreviatura);
        }

        public clBanco() { }

        public string Codigo
        {
            get
            {
                return _Codigo;
            }
            set
            {
                _Codigo = value;
            }
        }

        public string Abreviatura
        {
            get
            {
                return _Abreviatura;
            }
            set
            {
                _Abreviatura = value;
            }
        }

        public override string ToString()
        {
            return _Abreviatura;
        }
    }

    class clCuenta
    {
        private string _Numero;
        private string _Descripcion;
        private string _CodBanco;
        private int _UltCheque;

        public clCuenta(string pNumero, string pDescripcion, string pCodBanco, int pUltCheque)
        {
            Numero = pNumero;
            Descirpcion = pDescripcion;
            CodBanco = pCodBanco;
            UltCheque = pUltCheque;
        }

        public clCuenta(object pNumero, object pDescripcion, object pCodBanco, object pUltCheque)
        {
            Numero = System.Convert.ToString(pNumero);
            Descirpcion = System.Convert.ToString(pDescripcion);
            CodBanco = System.Convert.ToString(pCodBanco);
            UltCheque = System.Convert.ToInt32(pUltCheque);
        }

        public clCuenta() { }

        public string CodBanco
        {
            get
            {
                return _CodBanco;
            }
            set
            {
                _CodBanco = value;
            }
        }

        public string Descirpcion
        {
            get
            {
                return _Descripcion;
            }
            set
            {
                _Descripcion = value;
            }
        }

        public string Numero
        {
            get
            {
                return _Numero;
            }
            set
            {
                _Numero = value;
            }
        }

        public int UltCheque
        {
            get
            {
                return _UltCheque;
            }
            set
            {
                _UltCheque = value;
            }
        }

        public override string ToString()
        {
            return _Descripcion;
        }
    }

    class Utilidades
    {
        //public static string LibAS400 = "CPXDTTRA";
        public static string LibAS400 = "CPXDATOS";

        public static string montoEscrito(double pNumero)
        {
            string[] uno_Al_Diecinueve = { "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE" };
            string[] decenas_20_al_90 ={ "VEINTI", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA" };
            string tMonEsc = "";
            //Pasar el tipo double a string con ceros a la izquierda
            string tNumero = pNumero.ToString("000000000000.00");
            string tParteEntera = tNumero.Substring(0, 12);
            string tParteDecimal = tNumero.Substring(13, 2);
            string resto, porcion;
            string relleno = "********************************************************************************";

            for (int contador = 0; contador <= 3; contador++)
            {
                resto = "";
                if (contador == 0 || contador == 2)
                {
                    resto = " MIL ";
                }
                else if (contador == 1)
                {
                    resto = " MILLON ";
                }
                //porcion = tNumero.Substring((contador*3)+1, 3);
                porcion = tParteEntera.Substring((contador * 3), 3);
                if (int.Parse(porcion) > 0)
                {
                    if (contador == 0 && tParteEntera.Substring(3, 3) == "000")
                    {
                        resto = resto + "MILLONES ";
                    }
                    if (resto == " MILLON " && porcion.Substring(2, 1) != "1")
                    {
                        resto = " MILLONES ";
                    }
                    if (porcion.Substring(0, 1) != "0")
                    {
                        if (porcion.Substring(0, 1) == "1")
                        {
                            if (int.Parse(porcion.Substring(1, 2)) > 0)
                            {
                                tMonEsc += "CIENTO ";
                            }
                            else
                            {
                                tMonEsc += "CIEN ";
                            }
                        }
                        else
                        {
                            if (porcion.Substring(0, 1) == "5")
                            {
                                tMonEsc += "QUINIENTOS ";
                            }
                            else if (porcion.Substring(0, 1) == "7")
                            {
                                tMonEsc += "SETECIENTOS ";
                            }
                            else if (porcion.Substring(0, 1) == "9")
                            {
                                tMonEsc += "NOVECIENTOS ";
                            }
                            else
                            {
                                tMonEsc += uno_Al_Diecinueve[int.Parse(porcion.Substring(0, 1)) - 1] + "CIENTOS" + " ";
                            }       //End if (porcion.Substring(0,1) == "5")
                        }       //End if (porcion.Substring(0,1) == "1")
                    }       //End if (porcion.Substring(0,1) != "0")
                    if (int.Parse(porcion.Substring(1, 2)) != 0)
                    {
                        if (int.Parse(porcion.Substring(1, 2)) < 20)
                        {
                            tMonEsc += uno_Al_Diecinueve[int.Parse(porcion.Substring(1, 2)) - 1];
                        }
                        else
                        {
                            if (porcion.Substring(2, 1) == "0")
                            {
                                if (porcion.Substring(1, 1) == "2")
                                {
                                    tMonEsc += "VEINTE";
                                }
                                else
                                {
                                    tMonEsc += decenas_20_al_90[int.Parse(porcion.Substring(1, 1)) - 2];
                                }       //End if (porcion.Substring(1,1) = "2")
                            }
                            else
                            {
                                if (porcion.Substring(1, 1) == "2")
                                {
                                    tMonEsc += decenas_20_al_90[int.Parse(porcion.Substring(1, 1)) - 2];
                                }
                                else
                                {
                                    tMonEsc += decenas_20_al_90[int.Parse(porcion.Substring(1, 1)) - 2] + " Y ";
                                }       //End if (porcion.Substring(1,1) = "2")
                                tMonEsc += uno_Al_Diecinueve[int.Parse(porcion.Substring(2, 1)) - 1];
                            }       //End if (porcion.Substring(2,1) = "0")
                        }       //End if (int.Parse(porcion.Substring(1,2))< 20)
                    }       //End if (int.Parse(porcion.Substring(1,2))!= 0)
                    tMonEsc += resto;
                }       //End if (int.Parse(porcion) > 0)
            }       //cierre for (int contador = 0; contador<=3; contador++ )
            if (tMonEsc == "")
            {
                tMonEsc = "CERO CON " + tParteDecimal + "/100";
            }
            else
            {
                tMonEsc += " CON " + tParteDecimal + "/100";
            }
            if (tMonEsc.Length > 90)
            {
                tMonEsc = tMonEsc.Remove(90);
            }
            tMonEsc += relleno.Substring(0, (90 - tMonEsc.Length));
            return tMonEsc;
        }       //cierre metodo montoEscrito

        public static bool usuarioValido(string pCodigoUsuario)
        {
            string tSql = "SELECT Estado FROM " + LibAS400 + ".CHQUSR WHERE UsuarioID = '" + pCodigoUsuario.ToUpper() + "'";
            accesoDatos400 datos = new accesoDatos400();
            if (datos.leerValorSQL(tSql) == "A")
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

    public class clCheque
    {
        #region Propiedades
        private int _CiaCod;
        private string _Banco;
        private string _CuentaCte;
        private DateTime _FechaImp;
        private string _MonEsc;
        private int _Numero;
        private string _UsuarioImp;

        public int CiaCod
        {
            get
            {
                return _CiaCod;
            }
            set
            {
                _CiaCod = value;
            }
        }
        public string Banco
        {
            get
            {
                return _Banco;
            }
            set
            {
                _Banco = value;
            }
        }
        public string CuentaCte
        {
            get
            {
                return _CuentaCte;
            }
            set
            {
                _CuentaCte = value;
            }
        }
        public int Numero
        {
            get
            {
                return _Numero;
            }
            set
            {
                _Numero = value;
            }
        }
        public DateTime FechaImp
        {
            get
            {
                return _FechaImp;
            }
            set
            {
                _FechaImp = value;
            }
        }
        public string UsuarioImp
        {
            get
            {
                return _UsuarioImp;
            }
            set
            {
                _UsuarioImp = value;
            }
        }
        public string MonEsc
        {
            get
            {
                return _MonEsc;
            }
            set
            {
                _MonEsc = value;
            }
        }
        #endregion Propiedades

        #region Metodos publicos
        public void salvarDatos()
        {
            //Crear la sentencia SQL
            string tSql = "UPDATE " + Utilidades.LibAS400 + ".CHQENC SET " +
                    " IMPRESO = 'S', " +
                    " FECHAIMP = '" + FechaImp.ToString("yyyy-MM-dd-hh.mm.ss.ffff") + "', " +
                //" FECHAIMP = '" + FechaImp.ToUniversalTime() + "', " +
                    " USUARIOIMP = '" + UsuarioImp + "', " +
                    " MonEsc = '" + MonEsc + "' " +
                    " WHERE BANCO = '" + Banco + "'" +
                    " AND CUENTACTE = '" + CuentaCte + "'" +
                    " AND NUMERO = " + Numero;
            //Crear instancia de clase de la capa de datos
            accesoDatos400 datos = new accesoDatos400();
            datos.ejecutarSQL(tSql);
        }
        public void borrarLineasExtra()
        {
            string tSql = "DELETE FROM " + Utilidades.LibAS400 + ".CHQDET WHERE LINEA > 9";
            //Crear instancia de clase de la capa de datos
            accesoDatos400 datos = new accesoDatos400();
            datos.ejecutarSQL(tSql);
        }       //Fin metodo borrarLineasExtra
        #endregion Propiedades
    }
}

